package com.indexingsystem.boss.core.orm.dialect;
//package com.indexingsystem.boss.core.orm.dialect;
//
//import java.util.Collections;
//import java.util.Comparator;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//import java.util.TreeMap;
//
//import javax.annotation.Resource;
//
//import org.apache.commons.lang.StringUtils;
//import org.apache.shiro.SecurityUtils;
//import org.apache.shiro.authz.SimpleAuthorizationInfo;
//
//import com.indexingsystem.boss.Vo.RolesListVo;
//import com.indexingsystem.boss.entity.Roles;
//import com.indexingsystem.boss.token.manager.TokenManager;
//import com.indexingsystem.system.service.IRolesService;
//
//import cn.dreampie.shiro.core.JdbcAuthzService;
//import cn.dreampie.shiro.core.handler.AuthzHandler;
//import cn.dreampie.shiro.core.handler.JdbcPermissionAuthzHandler;
//
///**
// * JDBC Auth动态加载.
// * 
// * @author Administrator
// *
// */
//public class MyJdbcAuthzService implements JdbcAuthzService {
//	
//	@Resource
//	private IRolesService iRolesService;
//	
//	@Override
//	public Map<String, AuthzHandler> getJdbcAuthz() {
//		// 加载数据库的url配置
//		// 按长度倒序排列url
//		Map<String, AuthzHandler> authzJdbcMaps = Collections
//				.synchronizedMap(new TreeMap<String, AuthzHandler>(new Comparator<String>() {
//					public int compare(String k1, String k2) {
//						int result = k2.length() - k1.length();
//						if (result == 0) {
//							return k1.compareTo(k2);
//						}
//						return result;
//					}
//				}));
//		
//		String userId = TokenManager.getUserId();
//		SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
//		if (StringUtils.isNotBlank(userId)) {
//			// 根据用户ID查询角色（role），放入到Authorization里。
//			Set<String> roles = iRolesService.findRoleByUserId(userId);
//			info.setRoles(roles);
//			// 根据用户ID查询权限（permission），放入到Authorization里。
//			Set<String> permissions = iOperationsService.findPermissionByUserId(userId);
//			info.setStringPermissions(permissions);
//		} else {
//			SecurityUtils.getSubject().logout();
//		
//		
//		// 遍历角色
//		List<Roles> roles = iRolesService.getRolesList();
//		List<Permission> permissions = null;
//		for (Roles role : roles) {
//			// 角色可用
//			if (role.getDate("daleted_at") == null) {
//				permissions = Permission.dao.findByRole("", role.get("id"));
//				// 遍历权限
//				for (Permission permission : permissions) {
//					// 权限可用
//					if (permission.getDate("daleted_at") == null) {
//						if (permission.getStr("url") != null && !permission.getStr("url").isEmpty()) {
//							authzJdbcMaps.put(permission.getStr("url"),
//									new JdbcPermissionAuthzHandler(permission.getStr("value")));
//						}
//					}
//				}
//			}
//		}
//		return authzJdbcMaps;
//	}
//}